// import { defineStore } from "pinia";
import { defineStore } from "../pinia";

import { reactive, computed, toRefs } from "vue";

// 写法一
export const useCounterStore = defineStore("counter", {
  // counter 唯一的
  // 定义状态
  state: () => ({
    count: 999,
    fruits: ["1", "3"],
  }),
  // 类似计算属性
  getters: {
    doubleCount: (store) => store.count * 2,
  },
  // 类似方法,不区分是否是异步了
  actions: {
    increment() {
      return Math.random() > 0.5
        ? this.count++
        : new Promise((resolve, reject) => {
          setTimeout(() => {
            Math.random() > 0.5 ? resolve("success") : reject("error");
          }, 1000);
        });
    },
  },
});

// // 写法二
// export const useCounterStore = defineStore({
//   id: "counter",
//   // counter 唯一的
//   // 定义状态
//   state: () => ({
//     count: 999,
//     fruits: ['1', '3']
//   }),
//   // 类似计算属性
//   getters: {
//     doubleCount: (store) => store.count * 2
//   },
//   // 类似方法,不区分是否是异步了
//   actions: {
//     increment() {
//       this.count++;
//     }
//   }
// });

// // 写法三
// // 这种写法， store 的实例就不能调用 $reset 函数
// export const useCounterStore = defineStore('counter', () => {
//   const state = reactive({ count: 0, fruits: ['1', '3'] });
//   const doubleCount = computed(() => state.count * 2);

//   const increment = () => state.count++;

//   return {
//     ...toRefs(state),
//     doubleCount,
//     increment,
//   }
// });
